//
// Created by Administrator on 2024/5/29.
//
//
// Created by Administrator on 2024/5/29.
//
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Size 5;
typedef struct Table{
    int *head;
    int length;
    int size;
}Table;
//初始化顺序表
Table initTable(){
    Table t;//结构体变量t
    t.head=malloc(5*sizeof(int));
    if(!t.head){
        printf("初始化失败!\n");
        exit(0);
    }
    t.length=0;
    t.size=Size;
    return t;
}
//打印顺序表函数displayTable
void displayTable(Table t){
    for(int i=0;i<t.length;i++){
        printf("%d",t.head[i]);
    }
    printf("\n");
}
Table delTable(Table t,int num){
    if(num>t.length||num<1){
        printf("被删除元素的位置有问题\n");
        return t;
    }
    for(int i=num;i<t.length;i++){
        t.head[i-1]=t.head[i];
    }
    t.length--;
    return t;
}
//在指定位置输入元素
Table addTable(Table t,int elem,int num){
    if(num>t.length||num<1){
        printf("插入元素的位置有问题\n");
        return t;
    }
    if(t.length>=t.size){
        t.head= realloc(t.head, (t.size+1)*sizeof(int));
        if(!t.head){
            printf("空间分配失败\n");
        }
        t.size++;
    }
    for(int i=t.length-1;i>=num-1;i--){
        t.head[i+1]=t.head[i];
    }
    t.head[num-1]=num;
    t.length++;
    return t;
}
int findTable(Table t,int num){
    for(int i=0;i<t.length-1;i++){
        if(t.head[i]==num){
            return i;
        }
    }
}
Table  xiugaiTable(Table t,int sum,int num) {
    for (int i = 0; i < t.length; i++) {
        if (sum == t.head[i]) {
            t.head[i] = num;
        }
    }
    return t;
}
int main() {
    Table t1 = initTable();
    for (int i = 0; i < 5; i++) {
        t1.head[i] = i;
        t1.length++;
    }
    printf("打印原顺序表：\n");
    displayTable(t1);
    printf("删除元素，\n");
    t1 = delTable(t1, 3);
    displayTable(t1);
    return 0;
}